iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
Modern Web

自動化 End-End 測試 Nightwatch.js系列 第 16

自動化 End-End 測試 Nightwatch.js 之踩雷筆記:開啟新視窗

  • 分享至 

  • xImage
  •  

測試當中時常會有需要先儲存後檢查的動作,如此就要先開好兩個視窗,不管是新分頁或新視窗,一個作為編輯頁面,一個則作為檢查頁面。如果是每編輯一個地方就需要檢查,最方便快速就是有兩個視窗來回切換檢查。

openWindow()

其實 Nightwatch 中並沒有可以直接開新視窗或新分頁的方式,可是我們可以利用原生的 Javascript 建立:

window.open(strUrl, strWindowName, [strWindowFeatures]);
  • strUrl 為需要開啟的 url 網址
  • strWindowName 新視窗的名稱,也可以利用這個選擇開啟新視窗或新分頁
  • strWindowFeatures 用於設定一些新視窗的參數特性

舉例而言,如果要在新分頁中開啟 google search

window.open('https://www.google.com/', '_blank');

新視窗則是

window.open('https://www.google.com/', null, 'height=1024, width=768');

後面的 height, width 為視窗大小

透過 Nightwatch 的 execute 方式執行則會變成:

.execute(
  function(newWindow) {
    window.open(newWindow, null, 'height=1024,width=768');
  },
  [url],
);

當然也可以包成客製化指令:

module.exports = {
  command: async function(url) {
    this.execute(
      function(newWindow) {
        window.open(newWindow, null, 'height=1024,width=768');
      },
      [url],
    );
  },
};

如此一來,我們就可以先開啟視窗 -> 切換視窗的方式驗證了~

browser.openWindow(testURL)
browser.windowHandles(function(result) {
           browser.switchWindow(result.value[1]);
           // Verify
           browser.switchWindow(result.value[0]);
       }

上一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:getCssProperty()
下一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:關閉多視窗
系列文
自動化 End-End 測試 Nightwatch.js30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言